home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / DJGPP / GAS211S2.ZIP / src / gas-211 / include / coff / symconst.h < prev    next >
Text File  |  1993-05-30  |  7KB  |  171 lines

  1. /* Declarations of constants for internal format of MIPS ECOFF symbols.
  2.    Originally contributed by MIPS Computer Systems and Third Eye Software.
  3.    Changes contributed by Cygnus Support are in the public domain.  */
  4.  
  5. /*
  6.  * |-----------------------------------------------------------|
  7.  * | Copyright (c) 1992, 1991, 1990 MIPS Computer Systems, Inc.|
  8.  * | MIPS Computer Systems, Inc. grants reproduction and use   |
  9.  * | rights to all parties, PROVIDED that this comment is      |
  10.  * | maintained in the copy.                                   |
  11.  * |-----------------------------------------------------------|
  12.  */
  13. /* $Header: /rel/cvsfiles/devo/include/coff/symconst.h,v 1.6 1992/08/27 22:12:38 brendan Exp $ */
  14.  
  15. /* (C) Copyright 1984 by Third Eye Software, Inc.
  16.  *
  17.  * Third Eye Software, Inc. grants reproduction and use rights to
  18.  * all parties, PROVIDED that this comment is maintained in the copy.
  19.  *
  20.  * Third Eye makes no claims about the applicability of this
  21.  * symbol table to a particular use.
  22.  */
  23.  
  24. /* glevels for field in FDR */
  25. #define GLEVEL_0    2
  26. #define GLEVEL_1    1
  27. #define GLEVEL_2    0    /* for upward compat reasons. */
  28. #define GLEVEL_3    3
  29.  
  30. /* magic number fo symheader */
  31. #define magicSym    0x7009
  32.  
  33. /* Language codes */
  34. #define langC        0    
  35. #define langPascal    1
  36. #define langFortran    2
  37. #define    langAssembler    3    /* one Assembley inst might map to many mach */
  38. #define langMachine    4
  39. #define langNil        5
  40. #define langAda        6
  41. #define langPl1        7
  42. #define langCobol    8
  43. #define langStdc    9    /* FIXME: Collides with SGI langCplusplus */
  44. #define langCplusplus    9    /* FIXME: Collides with langStdc */
  45. #define langCplusplusV2    10    /* SGI addition */
  46. #define langMax        11    /* maximun allowed 32 -- 5 bits */
  47.  
  48. /* The following are value definitions for the fields in the SYMR */
  49.  
  50. /*
  51.  * Storage Classes
  52.  */
  53.  
  54. #define scNil        0
  55. #define scText        1    /* text symbol */
  56. #define scData        2    /* initialized data symbol */
  57. #define scBss        3    /* un-initialized data symbol */
  58. #define scRegister    4    /* value of symbol is register number */
  59. #define scAbs        5    /* value of symbol is absolute */
  60. #define scUndefined    6    /* who knows? */
  61. #define scCdbLocal    7    /* variable's value is IN se->va.?? */
  62. #define scBits        8    /* this is a bit field */
  63. #define scCdbSystem    9    /* variable's value is IN CDB's address space */
  64. #define scDbx        9    /* overlap dbx internal use */
  65. #define scRegImage    10    /* register value saved on stack */
  66. #define scInfo        11    /* symbol contains debugger information */
  67. #define scUserStruct    12    /* address in struct user for current process */
  68. #define scSData        13    /* load time only small data */
  69. #define scSBss        14    /* load time only small common */
  70. #define scRData        15    /* load time only read only data */
  71. #define scVar        16    /* Var parameter (fortran,pascal) */
  72. #define scCommon    17    /* common variable */
  73. #define scSCommon    18    /* small common */
  74. #define scVarRegister    19    /* Var parameter in a register */
  75. #define scVariant    20    /* Variant record */
  76. #define scSUndefined    21    /* small undefined(external) data */
  77. #define scInit        22    /* .init section symbol */
  78. #define scBasedVar    23    /* Fortran or PL/1 ptr based var */ 
  79. #define scXData         24      /* exception handling data */
  80. #define scPData         25      /* Procedure section */
  81. #define scFini          26      /* .fini section */
  82. #define scMax        32
  83.  
  84.  
  85. /*
  86.  *   Symbol Types
  87.  */
  88.  
  89. #define stNil        0    /* Nuthin' special */
  90. #define stGlobal    1    /* external symbol */
  91. #define stStatic    2    /* static */
  92. #define stParam        3    /* procedure argument */
  93. #define stLocal        4    /* local variable */
  94. #define stLabel        5    /* label */
  95. #define stProc        6    /*     "      "     Procedure */
  96. #define stBlock        7    /* beginnning of block */
  97. #define stEnd        8    /* end (of anything) */
  98. #define stMember    9    /* member (of anything    - struct/union/enum */
  99. #define stTypedef    10    /* type definition */
  100. #define stFile        11    /* file name */
  101. #define stRegReloc    12    /* register relocation */
  102. #define stForward    13    /* forwarding address */
  103. #define stStaticProc    14    /* load time only static procs */
  104. #define stConstant    15    /* const */
  105. #define stStaParam    16    /* Fortran static parameters */
  106.     /* These new symbol types have been recently added to SGI machines. */
  107. #define stStruct    26    /* Beginning of block defining a struct type */
  108. #define stUnion        27    /* Beginning of block defining a union type */
  109. #define stEnum        28    /* Beginning of block defining an enum type */
  110.     /* Psuedo-symbols - internal to debugger */
  111. #define stStr        60    /* string */
  112. #define stNumber    61    /* pure number (ie. 4 NOR 2+2) */
  113. #define stExpr        62    /* 2+2 vs. 4 */
  114. #define stType        63    /* post-coersion SER */
  115. #define stMax        64
  116.  
  117. /* definitions for fields in TIR */
  118.  
  119. /* type qualifiers for ti.tq0 -> ti.(itqMax-1) */
  120. #define tqNil    0    /* bt is what you see */
  121. #define tqPtr    1    /* pointer */
  122. #define tqProc    2    /* procedure */
  123. #define tqArray 3    /* duh */
  124. #define tqFar    4    /* longer addressing - 8086/8 land */
  125. #define tqVol    5    /* volatile */
  126. #define tqConst 6    /* const */
  127. #define tqMax    8
  128.  
  129. /* basic types as seen in ti.bt */
  130. #define btNil        0    /* undefined (also, enum members) */
  131. #define btAdr        1    /* address - integer same size as pointer */
  132. #define btChar        2    /* character */
  133. #define btUChar        3    /* unsigned character */
  134. #define btShort        4    /* short */
  135. #define btUShort    5    /* unsigned short */
  136. #define btInt        6    /* int */
  137. #define btUInt        7    /* unsigned int */
  138. #define btLong        8    /* long */
  139. #define btULong        9    /* unsigned long */
  140. #define btFloat        10    /* float (real) */
  141. #define btDouble    11    /* Double (real) */
  142. #define btStruct    12    /* Structure (Record) */
  143. #define btUnion        13    /* Union (variant) */
  144. #define btEnum        14    /* Enumerated */
  145. #define btTypedef    15    /* defined via a typedef, isymRef points */
  146. #define btRange        16    /* subrange of int */
  147. #define btSet        17    /* pascal sets */
  148. #define btComplex    18    /* fortran complex */
  149. #define btDComplex    19    /* fortran double complex */
  150. #define btIndirect    20    /* forward or unnamed typedef */
  151. #define btFixedDec    21    /* Fixed Decimal */
  152. #define btFloatDec    22    /* Float Decimal */
  153. #define btString    23    /* Varying Length Character String */
  154. #define btBit        24    /* Aligned Bit String */
  155. #define btPicture    25    /* Picture */
  156. #define btVoid        26    /* void */
  157. #define btLongLong    27    /* long long */
  158. #define btULongLong    28    /* unsigned long long */
  159. #define btMax        64
  160.  
  161. #if (_MFG == _MIPS)
  162. /* optimization type codes */
  163. #define otNil        0
  164. #define otReg        1    /* move var to reg */
  165. #define otBlock        2    /* begin basic block */
  166. #define    otProc        3    /* procedure */
  167. #define otInline    4    /* inline procedure */
  168. #define otEnd        5    /* whatever you started */
  169. #define otMax        6    /* KEEP UP TO DATE */
  170. #endif /* (_MFG == _MIPS) */
  171.